﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Company.Database.Base.Entities
{
    /// <summary>
    /// OBX主要用于在报告消息中传递观察的信息。如果传输的是病人的样本测试信息（MSH-16为0时）——
    /// 一个病人可能有多个OBX，
    /// 本接口不提供对检验数据的重复性检测，由客户系统对数据自行进行处理。
    /// </summary>
    [Table(nameof(HL7OBX))]
    public class HL7OBX : HL7Base
    {
        /// <summary>
        /// 确定不同的OBX字段
        /// </summary>
        public string? setId { get; set; }
        /// <summary>
        /// 值类型，用作标识测试结果的类型
        /// NM(numeric) 表示数字值，用于定量项目 
        /// ST(string) 表示字符串值，用于定性项目
        /// BOTH 表示即有定量结果，又有定性结果
        /// </summary>
        public string? valueType { get; set; }
        /// <summary>
        /// 检验项目通道号，在操作软件中，为项目参数设置界面中项目的Lis通道号，可以是数字或字母
        /// LIS接收仪器发送的测试结果，必须使用此字段来匹配项目
        /// </summary>
        public string? observationIdentifier { get; set; }
        /// <summary>
        /// 检验项目名称
        /// </summary>
        public string? observationSubId { get; set; }
        /// <summary>
        /// 观察值，用作定量检验结果值（结果浓度）
        /// </summary>
        public string? observationValue { get; set; }
        /// <summary>
        /// 单位，用作检验结果值的单位
        /// </summary>
        public string? units { get; set; }
        /// <summary>
        /// 参考范围，检验结果值正常范围
        /// </summary>
        public string? referencesRange { get; set; }
        /// <summary>
        /// 异常标志，检验结果是否正常（描述）
        /// L-偏低
        /// H-偏高
        /// N-正常
        /// </summary>
        public string? abnormalFlags { get; set; }
        /// <summary>
        /// 可能性，用作定性检验结果值（阴性(-)、阳性(+)、弱阳性(+-)等）
        /// </summary>
        public string? probability { get; set; }
        /// <summary>
        /// 异常测试原因，用作定性参考值
        /// </summary>
        public string? natureofAbnormalTest { get; set; }
        /// <summary>
        /// 观察结果状态，取F-final results
        /// </summary>
        public string? observeResultStatus { get; set; }
        /// <summary>
        /// 置空，保留。最后观察正常值日期
        /// </summary>
        public DateTime dateLastObserveNormalValues { get; set; }
        /// <summary>
        /// 用户自定义访问检查，用作原始结果
        /// </summary>
        public string? userDefinedAccessChecks { get; set; }
        /// <summary>
        /// 观察日期/时间，用作检验时间
        /// </summary>
        public DateTime dateTimeoftheObservation { get; set; }
        /// <summary>
        /// 置空，保留。用作检验科室
        /// </summary>
        public string? producersID { get; set; }
        /// <summary>
        /// 负责观察者，用作检验医生
        /// </summary>
        public string? responsibleObserver { get; set; }
        /// <summary>
        /// 置空，保留。观察方法
        /// </summary>
        public string? observationMethod { get; set; }

        /*
         * 备注：该消息段仅出现在ORU^R01消息中。
         * 第1、3、9字段使用整型数据类型；
         * 第5、13字段使用浮点数据类型；其他字段均使用字符串数据类型。 
         * 需要注意的是：当做了SI项目的测试后，
         * 第5、13字段的格式为结果1^结果2^结果3，
         * 其中结果1为浊度（L），结果2为溶血（H），结果3为黄疸（I），分别为SI项目的三个结果。
         */
    }
}
